home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / clcl / aoi_lib2.h < prev    next >
Text File  |  1994-06-01  |  25KB  |  1,089 lines

  1. /*
  2. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  3. ┃ ライブラリ用ヘッダファイル       /////  Tab Size : 4  /////  ┃
  4. ┃                                  /////  Margin : 100  /////  ┃
  5. ┃ aoi_lib2.h   v1.0 L21                                        ┃
  6. ┃                                                              ┃
  7. ┃ (C)K.Konishi 10-Feb-94                                       ┃
  8. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
  9. */
  10.  
  11.  
  12. #if !defined(___AOI_lib)
  13.     #define    ___AOI_lib
  14.     #define    ___AOI_libDate    16-08-92
  15.     #define    ___AOI_libVer    v1.0_L20
  16.  
  17. typedef struct AOIstringData {    /* AOIstringのデータ格納用の構造体 */
  18.     short    ax, ay,                    /* ANK 文字 大きさ */
  19.             sx, sy;                    /* SJIS文字 大きさ */
  20.     int        sc,                        /* 文字の色 */
  21.             ss;                        /* 文字のスタイル */
  22. }AOIstringData;
  23.  
  24. typedef struct AOIbuttonData {    /* AOIbuttonのデータ格納用の構造体 */
  25.     short     x,  y,                    /* ボタン座標 */
  26.             lx, ly;                    /* ボタン大きさ */
  27. }AOIbuttonData;
  28.  
  29. #ifdef    LIB
  30. char    para[64];
  31. char    work[EgbWorkSize];
  32. char    mwork[MosWorkSize];
  33. char     pat_work[258];
  34.  
  35. #define    BUTTON    100
  36.  
  37. #define    AOImbMaxSize    256
  38.  
  39.  
  40.  
  41.  
  42. #endif
  43.  
  44.  
  45.  
  46. #if !defined(LIB)
  47. #include <EGB.h>
  48. #include <MOS.h>
  49. extern    char    para[64];
  50. extern    char    work[EgbWorkSize];
  51. extern    char    mwork[MosWorkSize];
  52. extern    char     pat_work[258];
  53.  
  54. #define    BUTTON    100
  55.  
  56.  
  57. #define    MDCL1     1    /* 色の名前 */
  58. #define    MDCL2     2
  59. #define    MDCL3     3
  60. #define    MDCL4     4
  61. #define    MDCL5     5
  62. #define    MDCL6     6
  63. #define    MDCL7     7
  64.  
  65. #define    BLACK     8
  66. #define    BLUE     9
  67. #define    RED        10
  68. #define    PURPLE    11
  69. #define    GREEN    12
  70. #define    SKYBLUE    13
  71. #define    YELLOW    14
  72. #define    WHITE    15
  73.  
  74. #define    AOImbMaxSize    256
  75.  
  76. #endif
  77.  
  78. int AOIpset(short x, short y, short c);
  79.  
  80. int AOIcircle(short x, short y, short r, short c);
  81.  
  82. int AOIstring(short x, short y, AOIstringData *Data, char *tx);
  83.  
  84. int AOIstrSetup(short zsx, short zsy, short zax, short zay, short sf, short sc);
  85.  
  86. int AOIstrSjis(short x, short y, char *tx);
  87.  
  88. int AOIanyChar(short x, short y, short fx, short fy, char *data);
  89.  
  90. int AOIline(short x0, short y0, short x1, short y1, short c);
  91.  
  92. int AOIconnectLeft(short x0, short y0, short x1, short y1, short c);
  93.  
  94. int AOIconnectRight(short x0, short y0, short x1, short y1, short c);
  95.  
  96. int AOIconnectLeftIGRB(short x0, short y0, short x1, short y1, int c);
  97.  
  98. int AOIconnectRightIGRB(short x0, short y0, short x1, short y1, int c);
  99.  
  100. int AOIbox(short x0, short y0, short x1, short y1, short c);
  101.  
  102. int AOIboxFull(short x0, short y0, short x1, short y1, int c);
  103.  
  104. int AOIboxFullIGRB(short x0, short y0, short x1, short y1, int c);
  105.  
  106. int AOIwinBase(short x, short y, short lx, short ly, short sd);
  107.  
  108. int AOIwinBase2(int x, int y, int lx, int ly, int sd);
  109.  
  110. int AOIbuttonBase(short x, short y, short lx, short ly);
  111.  
  112. int AOIbuttonBase2(int x, int y, int lx, int ly);
  113.  
  114. int AOIwinBase32k(int x, int y, int lx, int ly, int sd);
  115.  
  116. int AOIbuttonBase32k(int x, int y, int lx, int ly);
  117.  
  118. int AOIsetPalette(int cn, int cg, int cr, int cb);
  119.  
  120. int AOIsetPalette256(int cn, int cg, int cr, int cb);
  121.  
  122. int AOIsetStandardPalette(void);
  123.  
  124. int AOIcolorIGRB(int g, int r, int b);
  125.  
  126. short AOIbin2short(char *bin);
  127.  
  128. long AOIbin2long(char *bin);
  129.  
  130. void AOIsetButton(AOIbuttonData *Data, short x, short y, short lx, short ly);
  131.  
  132. int AOIbutton(short sx, short sy, int mx, int my, AOIbuttonData *Data);
  133.  
  134. void AOIfigureDraw(short sx, short sy, short figure);
  135.  
  136. void _AOIfigureDrawSet(short *fig, short *a);
  137.  
  138. void AOIfigureDraw2(short sx, short sy, int figure);
  139.  
  140. short _AOIrandom(short max);    /* 0~99までの特殊用途乱数発生 */
  141.  
  142. long AOIrandom(long max);        /* 0~999999までの乱数発生 */
  143.  
  144. int AOIbuttonLamp(short sx, short sy, AOIbuttonData *Data);
  145.  
  146. int AOIslantingBox(short x0, short y0, short x1, short y1, short lx, short cl);
  147.  
  148. int AOIslantingBoxFull(short x0, short y0, short x1, short y1, short lx, short cl);
  149.  
  150. int AOIpadCheck(int *status);
  151.  
  152. int AOIpadCheck2(int *status, int a[]);
  153.  
  154. void ank2sjis(char string[], char str[]);
  155.  
  156. void AOIstrFJ2(FILE *fp, short fs, short sx, short sy, char st[], short gap);
  157.  
  158. void AOIstring_FJ2(FILE *fp, short fs, short sx, short sy, char st[], short sc, short gap);
  159.  
  160. void AOIstrFJ2Zoom(FILE *fp, short fs, short sx, short sy, char st[], short sc, short gap, short zx, short zy);
  161.  
  162. short _AOIsystem12FontSetup(char fnt12File[]);
  163.  
  164. void AOIsystem16Font(short x, short y, short c, char *str);
  165.  
  166. void AOIsystem12Font(short x, short y, short c, char *str);
  167.  
  168. int AOIgetGraph(char *buf, short x0, short y0, short x1, short y1);    /* 画像データ画面の読み込み */
  169.  
  170. int AOIgetGraphZoom(char *buf, short x0, short y0, short x1, short y1, short xs, short ys);
  171.     /* 画像データ画面の読み込み */
  172.  
  173. int AOIputGraph(char *buf, short x0, short y0, short x1, short y1);    /*    画像データ画面の書き込み */
  174.  
  175. int AOIputGraphZoom(char *buf, short x0, short y0, short x1, short y1, short xs, short ys);
  176.     /*    画像データ画面の書き込み */
  177.  
  178. void AOIwindowMove(char *dispTmp, short *sx, short *sy, short lx, short ly);    /*    ウインドゥ移動 */
  179.  
  180. void AOIwindowMove2(char *winData, char *dispTmp, int *sx, int *sy, int lx, int ly, int sd);
  181.  
  182. int AOIgetColorMode(void);
  183.  
  184. int    AOImessageBox(int x, int y, int fontSize, char title[], int num, char mes[][AOImbMaxSize], int attr);
  185.  
  186. int AOItiff(int sx, int sy, char filename[100]);
  187.  
  188. void AOIwide17(void);        /* WIDE display set */
  189.  
  190. void AOIwide3(void);
  191.  
  192. void AOIwide3_2(void);
  193.  
  194. short AOItownsName(void);    /*    TOWNSの機種判別 */
  195.  
  196. #define getB(c)    (c & 0xff)
  197. #define getR(c)    ((c>>8) & 0xff)
  198. #define getG(c)    ((c>>16) & 0xff)
  199. #define RGBpack(r, g, b)    (((((g)<<16)&0xff0000)+(((r)<<8)&0xff00)+((b)&0xff))&0xffffff)
  200.  
  201. #define    shift32k(x)        (((x)<<3)&0xf8)
  202. #define    shift32kG(g)    ((shift32k(g)<<16)&0xf80000)
  203. #define    shift32kR(r)    ((shift32k(r)<< 8)&0x00f800)
  204. #define    shift32kB(b)    ((shift32k(b)    )&0x0000f8)
  205. #define RGBpack32k(r, g, b)    ((shift32kG(g)+shift32kR(r)+shift32kB(b))&0xffffff)
  206.  
  207. #define    DARKBULE32K        RGBpack32k(0x00,0x0e,0x15)
  208. #define    LIGHTBULE32K    RGBpack32k(0x08,0x18,0x1f)
  209. #define    WHITE32K        RGBpack32k(0x1f,0x1f,0x1f)
  210.  
  211. enum {MB_OK, MB_OKCANCEL, MB_YESNO};
  212. enum {ID_OK, ID_CANCEL, ID_YES, ID_NO, ID_ERR};
  213.  
  214. enum {R32k, R16, R256};
  215.  
  216. enum {OFF, ON};
  217.  
  218. #endif
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246. /*
  247. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  248. ┃  葵ライブラリ    AOI_LIB2    v1.0 L20    マニュアル                    ┃
  249. ┃                                                                        ┃
  250. ┃    (C)K.Konishi  16-Aug-93                                             ┃
  251. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
  252.  
  253.     1 葵ライブラリについて
  254.  
  255.            葵ライブラリは、私、小西国造が製作した HighC 用簡易ライブラリです。
  256.         C言語を始めたばかりの時の関数群もそのまま残っているので、かなり、
  257.         目茶苦茶な物もあります。
  258.  
  259.  
  260.         1.1 葵ライブラリ使用上の注意
  261.  
  262.               葵ライブラリによって、生じたあらゆる不都合について、私は一切
  263.             責任を負いません。一部、バグも野放しになっている場合もあります。
  264.  
  265.  
  266.         1.2 葵ライブラリの使い方
  267.  
  268.               以下、葵ライブラリを使うソースプログラムを TEST.C と呼びます。
  269.             ソースプログラム TEST.C の適当な所に、
  270.  
  271.                 #include <aoi_lib2.h>
  272.  
  273.             と記述して下さい。
  274.  
  275.                 [参考]葵ライブラリは、以下が定義されています。
  276.  
  277.                         #define    ___AOI_lib
  278.  
  279.               後、aoi_lib2.obj をリンクしてください。例えば、TLINK なら、
  280.  
  281.                   run386 tlinkp.exp TEST.OBJ @link01.lnk
  282.  
  283.             です。link01.lnk 内のパスは各自適当に指定してください。
  284.  
  285.  
  286.  
  287.     2 葵ライブラリ リファレンス
  288.  
  289.         ■ AOIpset            点描画
  290.  
  291.             int AOIpset(short x, short y, short c);
  292.                 //    0:正常終了
  293.             short    x;        //    開始X座標
  294.             short    y;        //    開始Y座標
  295.             short    c;        //    描画色
  296.  
  297.             例
  298.                 int     ret;
  299.  
  300.                 ret = AOIpset(320, 200, 15);
  301.                 //    座標(320, 200) に色番号15で点を描画します。
  302.  
  303.  
  304.  
  305.  
  306.  
  307.         ■ AOIstring        文字列描画 (旧)
  308.  
  309.             int AOIstring(short x, short y, AOIstringData *Data, char *tx)
  310.                 //    0:正常終了
  311.             short            x;        //    開始X座標
  312.             short            y;        //    開始Y座標
  313.             AOIstringData    *Data;    //    文字列装飾データ
  314.             char            *tx;    //    描画文字列
  315.  
  316.             例
  317.                 int     ret;
  318.                 AOIstringData    asD;    // AOIstrData型の変数宣言
  319.  
  320.                 asD.sx = 32;    //    全角のX方向大きさ
  321.                 asD.sy = 32;    //    全角のY方向大きさ
  322.                 asD.ax = 16;    //    半角のX方向大きさ
  323.                 asD.ay = 32;    //    半角のY方向大きさ
  324.                 asD.sc = BLACK;    //    描画色
  325.                 asD.ss = 0x00;    //    スタイル(HighC マニュアル EGB_fontStyle()参照)
  326.  
  327.                 ret = AOIstring(320, 200, &asD, "文字列ABCABC");
  328.                 //    座標(320, 200) に文字列を描画します。
  329.  
  330.             注意
  331.                 AOIstrSjis() の使用をお勧めします。
  332.  
  333.  
  334.  
  335.  
  336.  
  337.         ■ AOIstrSetup        AOIstrSjis() に対する文字列装飾設定
  338.  
  339.             int AOIstrSetup(zsx, zsy, zax, zay, sf, sc);
  340.                 //    0:正常終了
  341.             short    zsx;        //    全角のX方向大きさ
  342.             short    zsy;        //    全角のY方向大きさ
  343.             short    zax;        //    半角のX方向大きさ
  344.             short    zay;        //    半角のY方向大きさ
  345.             short    sf;            //    スタイル(HighC マニュアル EGB_fontStyle()参照)
  346.             short    sc;            //    描画色
  347.  
  348.         例
  349.             AOIstrSjis() の例を参照
  350.  
  351.  
  352.  
  353.  
  354.  
  355.         ■ AOIstrSjis        文字列描画 (新)
  356.  
  357.             int AOIstrSjis(short x, short y, char *tx)
  358.                 //    0:正常終了
  359.             short    x;            //    開始X座標
  360.             short    y;            //    開始Y座標
  361.             char    *tx;        //    描画文字列
  362.  
  363.             例
  364.                 int     ret1, ret2;
  365.  
  366.                 ret1 = AOIstrSetup(32, 32, 16, 32, 0x00, BLACK);
  367.                 ret2 = AOIstrSjis(320, 200, "文字列ABCABC");
  368.                 //    座標(320, 200) に文字列を描画します。
  369.  
  370.             注意
  371.                 AOIstrSjis() を呼び出す前に AOIstrSetup() で各種設定を
  372.                 行ってください。
  373.  
  374.  
  375.  
  376.  
  377.  
  378.         ■ AOIanyChar        座標設定も行う EGB_anyChar()
  379.  
  380.             int AOIanyChar(short x, short y, short fx, short fy, char *data);
  381.                 //    0:正常終了
  382.             short    x;            //    開始X座標
  383.             short    y;            //    開始Y座標
  384.             short    fx;            //    データの横サイズ(8ドット単位)
  385.             short    fy;            //    データの縦サイズ
  386.             char    *data;        //    データのアドレス
  387.  
  388.             例
  389.                 int        ret;
  390.                 char    data[] = {
  391.                             0x1c, 0x00, 0x3e, 0x00, 0x63, 0x00, 0x41, 0x00,
  392.                                0xc1, 0x80, 0xff, 0x80, 0xc1, 0x80, 0xc1, 0x80
  393.                            };
  394.  
  395.                 ret = AOIanyChar(320, 200, 8, 16, data);
  396.                 //    座標(320, 200) にdataの指すデータを描画します。
  397.  
  398.  
  399.  
  400.  
  401.  
  402.         ■ AOIline            線描画
  403.  
  404.             int AOIline(short x0, short y0, short x1, short y1, short c);
  405.                 //    0:正常終了
  406.             short    x0;            //    開始X座標
  407.             short    y0;            //    開始Y座標
  408.             short    x1;            //    終了X座標
  409.             short    y1;            //    終了Y座標
  410.             short    c;            //    描画色
  411.  
  412.             例
  413.                 int        ret;
  414.  
  415.                 ret = AOIline(320, 200, 600, 450, 15);
  416.                 // 座標(320, 200)から座標(320, 200)へ色番号15で線を描画します
  417.  
  418.  
  419.  
  420.  
  421.  
  422.         ■ AOIconnectLeft    ┌─ のように線を描画します
  423.  
  424.             int AOIconnectLeft(x0, y0, x1, y1, c);
  425.                 //    0:正常終了
  426.             short    x0;            //    開始X座標
  427.             short    y0;            //    開始Y座標
  428.             short    x1;            //    終了X座標
  429.             short    y1;            //    終了Y座標
  430.             short    c;            //    描画色
  431.  
  432.             例
  433.                 int        ret;
  434.  
  435.                 ret = AOIconnectLeft(320, 200, 600, 450, 15);
  436.                 // 座標(320, 450)~座標(320, 200)~座標(600, 200)の順に
  437.                     色番号15で線を描画します。
  438.  
  439.  
  440.  
  441.  
  442.  
  443.         ■ AOIconnectRight    ─┘ のように線を描画します
  444.  
  445.             int AOIconnectRight(x0, y0, x1, y1, c);
  446.                 //    0:正常終了
  447.             short    x0;            //    開始X座標
  448.             short    y0;            //    開始Y座標
  449.             short    x1;            //    終了X座標
  450.             short    y1;            //    終了Y座標
  451.             short    c;            //    描画色
  452.  
  453.             例
  454.                 int        ret;
  455.  
  456.                 ret = AOIconnectRight(320, 200, 600, 450, 15);
  457.                 // 座標(320, 450)~座標(600, 450)~座標(600, 200)の順に
  458.                     色番号15で線を描画します。
  459.  
  460.  
  461.  
  462.  
  463.  
  464.         ■ AOIbox            矩形描画
  465.  
  466.             int AOIbox(short x0, short y0, short x1, short y1, short c);
  467.                 //    0:正常終了
  468.             short    x0;            //    開始X座標
  469.             short    y0;            //    開始Y座標
  470.             short    x1;            //    終了X座標
  471.             short    y1;            //    終了Y座標
  472.             short    c;            //    描画色
  473.  
  474.             例
  475.                 int        ret;
  476.  
  477.                 ret = AOIbox(320, 200, 600, 450, 15);
  478.                 // 座標(320, 200)から(600, 450)へ色番号15で矩形を描画します。
  479.  
  480.  
  481.  
  482.  
  483.  
  484.         ■ AOIboxFull        塗りつぶし矩形描画
  485.  
  486.             int AOIboxFull(short x0, short y0, short x1, short y1, short c);
  487.                 //    0:正常終了
  488.             short    x0;            //    開始X座標
  489.             short    y0;            //    開始Y座標
  490.             short    x1;            //    終了X座標
  491.             short    y1;            //    終了Y座標
  492.             short    c;            //    描画色
  493.  
  494.             例
  495.                 int        ret;
  496.  
  497.                 ret = AOIboxFull(320, 200, 600, 450, 15);
  498.                 // 座標(320, 200)から座標(600, 450)へ色番号15で
  499.                     塗りつぶし矩形を描画します。
  500.  
  501.  
  502.  
  503.  
  504.  
  505.         ■ AOIwinBase        ウィンドウの下地描画
  506.  
  507.             int AOIwinBase(short x, short y, short lx, short ly, short sd);
  508.                 //    0:正常終了
  509.             short    x;            //    開始X座標
  510.             short    y;            //    開始Y座標
  511.             short    lx;            //    X方向大きさ
  512.             short    ly;            //    Y方向大きさ
  513.             short    sd;            //    影処理(1 : あり)
  514.  
  515.             例
  516.                 int        ret;
  517.  
  518.                 ret = AOIwinBase(320, 200, 100, 150, 1);
  519.                 // 座標(320, 200)から(100, 150)の大きさでウィンドウの下地描画
  520.                     します。影付き
  521.  
  522.  
  523.  
  524.  
  525.  
  526.         ■ AOIbuttonBase    ボタンの下地描画
  527.  
  528.             int AOIbuttonBase(short x, short y, short lx, short ly);
  529.                 //    0:正常終了
  530.             short    x;            //    開始X座標
  531.             short    y;            //    開始Y座標
  532.             short    lx;            //    X方向大きさ
  533.             short    ly;            //    Y方向大きさ
  534.  
  535.             例
  536.                 int        ret;
  537.  
  538.                 ret = AOIbuttonBase(320, 200, 100, 16);
  539.                 // 座標(320, 200)から(100,16)の大きさでボタンの下地描画します
  540.  
  541.  
  542.  
  543.  
  544.  
  545.         ■ AOIsetPalette    パレット設定(16色)
  546.  
  547.             int AOIsetPalette(int cn, int cg, int cr, int cb);
  548.                 //    0:正常終了
  549.             int        cn;            //    色識別番号
  550.             int        cg;            //    緑(16段階)
  551.             int        cr;            //    赤(16段階)
  552.             int        cb;            //    青(16段階)
  553.  
  554.             例
  555.                 int        ret;
  556.  
  557.                 ret = AOIsetPalette(14, 1, 2, 3);
  558.                     //    色識別番号14のパレットを(G, R, B) = (1, 2, 3)に設定。
  559.  
  560.  
  561.  
  562.  
  563.  
  564.         ■ AOIsetPalette256    パレット設定(256色)
  565.  
  566.             int AOIsetPalette256(int cn, int cg, int cr, int cb);
  567.                 //    0:正常終了
  568.             int        cn;            //    色識別番号
  569.             int        cg;            //    緑(256段階)
  570.             int        cr;            //    赤(256段階)
  571.             int        cb;            //    青(256段階)
  572.  
  573.             例
  574.                 int        ret;
  575.  
  576.                 ret = AOIsetPalette256(254, 10, 20, 30);
  577.                     //    色識別番号254のパレットを(G,R,B)=(10,20,30)に設定。
  578.  
  579.  
  580.  
  581.  
  582.  
  583.         ■ AOIcolorIGRB        RGBの値で描画色を設定
  584.  
  585.             int AOIcolorIGRB(int g, int r, int b);
  586.                 //    0:正常終了
  587.             int        g;            //    緑
  588.             int        r;            //    赤
  589.             int        b;            //    青
  590.  
  591.             例
  592.                 int        ret;
  593.  
  594.                 ret = AOIcolorIGRB(10, 20, 30);
  595.                     //    描画色を(G, R, B) = (10,20,30)に設定します。
  596.  
  597.  
  598.  
  599.  
  600.  
  601.         ■ AOIsetStandardPalette    16色モードの高輝度色のパレットを標準設定
  602.  
  603.             int AOIsetStandardPalette(void)
  604.                 //    0:正常終了
  605.  
  606.             例
  607.                 int        ret;
  608.  
  609.                 ret = AOIsetStandardPalette();
  610.                     //    16色モードの高輝度色のパレットを標準設定
  611.  
  612.  
  613.  
  614.  
  615.  
  616.         ■ AOIbin2short        2進数をshort型に変換し返します。
  617.  
  618.             short AOIbin2short(char *bin)
  619.                 //    2進数をshort型に変換し返します
  620.             char    *bin        //    2進数
  621.  
  622.             例
  623.                 short        ret;
  624.  
  625.                 ret = AOIbin2short("010101010");
  626.                     //    2進数 010101010 を short 型に変換し ret に格納します
  627.  
  628.  
  629.  
  630.  
  631.  
  632.         ■ AOIbin2long         2進数をlong 型に変換し返します。
  633.  
  634.             long  AOIbin2long (char *bin)
  635.                 //    2進数をlong 型に変換し返します
  636.             char    *bin        //    2進数
  637.  
  638.             例
  639.                 long     ret;
  640.  
  641.                 ret = AOIbin2long ("010101010");
  642.                     //    2進数 010101010 を long  型に変換し ret に格納します
  643.  
  644.  
  645.  
  646.  
  647.  
  648.         ■ AOIsetButton        指定範囲をボタンとして登録します
  649.  
  650.             void AOIsetButton(Data, x, y, lx, ly);
  651.                 //    戻りなし
  652.             AOIbuttonData    *Data;    //    ボタン属性
  653.             short            x;        //    開始X座標(0はウィンドウの開始X座標)
  654.             short            y;        //    開始Y座標(0はウィンドウの開始Y座標)
  655.             short            lx;        //    X方向大きさ
  656.             short            ly;        //    Y方向大きさ
  657.  
  658.             例
  659.                 AOIsetButton(&AbD[10], 10, 20, 100, 16);
  660.                 //    座標(10, 20)から(100, 16)の大きさの範囲をボタンとして
  661.                     登録番号10で登録します。
  662.  
  663.             注意
  664.                 AbD は aoi_lib2.h 内で予約されています。
  665.                 ユーザーが AOIbuttonData 型の宣言をしてはいけません。
  666.                 登録番号は 1 から 100 までです。
  667.  
  668.  
  669.  
  670.  
  671.  
  672.         ■ AOIbutton        今、押されているボタンの登録番号を返します
  673.  
  674.             int AOIbutton(sx, sy, mx, my, Data);
  675.                 //    今、押されているボタンの登録番号を返します
  676.                     何も、押されていないときは -1 を返します
  677.             short            sx;        //    現在のウィンドウの開始X座標
  678.             short            sy;        //    現在のウィンドウの開始Y座標
  679.             int                mx;        //    現在のマウスカーソルのX座標
  680.             int                my;        //    現在のマウスカーソルのY座標
  681.             AOIbuttonData    *Data;    //    ボタン属性
  682.  
  683.             例
  684.                 int        button;
  685.                 int        ch;
  686.                 int        mx;
  687.                 int        my;
  688.  
  689.                 MOS_rdpos(&ch, &mx, &my);
  690.                 button = AOIbutton(400, 200, mx, my, AbD);
  691.                 //    ウィンドウ開始座標(400, 200), マウスカーソル座標(mx, my)
  692.                     の時、押されているボタンの登録番号を button に返します。
  693.  
  694.             注意
  695.                 AbD は aoi_lib2.h 内で予約されています。
  696.                 ユーザーが AOIbuttonData 型の宣言をしてはいけません。
  697.                 登録番号は 1 から 100 までです。
  698.  
  699.  
  700.  
  701.  
  702.  
  703.         ■ AOIfigureDraw    2桁の数字をディジタル時計風12ドットで表示します
  704.  
  705.             void AOIfigureDraw(short sx, short sy, short figure);
  706.                 //    戻りなし
  707.             short    sx;            //    開始X座標
  708.             short    sy;            //    開始Y座標
  709.             short    figure;        //    表示数値
  710.  
  711.             例
  712.                 AOIfigureDraw(320, 200, 23);
  713.                 //    座標(320, 200)に数値 23 をディジタル12ドットで表示します
  714.  
  715.  
  716.  
  717.  
  718.  
  719.         ■ AOIfigureDraw2    2桁の数字をディジタル時計風25ドットで表示します
  720.  
  721.             void AOIfigureDraw(short sx, short sy, int figure);
  722.                 //    戻りなし
  723.             short    sx;            //    開始X座標
  724.             short    sy;            //    開始Y座標
  725.             int        figure;        //    表示数値
  726.  
  727.             例
  728.                 AOIfigureDraw2(320, 200, 23);
  729.                 //    座標(320, 200)に数値 23 をディジタル25ドットで表示します
  730.  
  731.  
  732.  
  733.  
  734.  
  735.         ■ AOIrandom        0~999999までの乱数発生
  736.  
  737.             long AOIrandom(long max);
  738.                 //    0~999999までの乱数
  739.             long    max;        //    最大値
  740.  
  741.             例
  742.                 long    ret;
  743.  
  744.                 ret = AOIrandom(250000);
  745.                 //    1~250000の間の乱数を ret に格納します
  746.  
  747.             注意
  748.                 乱数の種に内蔵時計を使用しています。
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.         ■ AOIbuttonLamp    指定された登録番号のボタンを反転表示します
  756.  
  757.             int AOIbuttonLamp(short sx, short sy, AOIbuttonData *Data);
  758.                 //    0 : 正常終了
  759.             short            sx;        //    現在のウィンドウの開始X座標
  760.             short            sy;        //    現在のウィンドウの開始Y座標
  761.             AOIbuttonData    *Data;    //    ボタン属性
  762.  
  763.             例
  764.                 int    ret;
  765.  
  766.                 ret = AOIbuttonLamp(400, 200, AbD[23]);
  767.                 //    ウィンドウ開始座標(400, 200), ボタンの登録番号 23 の
  768.                     ボタンを反転表示します。
  769.  
  770.             注意
  771.                 AbD は aoi_lib2.h 内で予約されています。
  772.                 ユーザーが AOIbuttonData 型の宣言をしてはいけません。
  773.                 登録番号は 1 から 100 までです。
  774.  
  775.  
  776.  
  777.  
  778.  
  779.         ■ AOIslantingBox    平行四辺形描画
  780.  
  781.             int AOIslantingBox(x0, y0, x1, y1, lx, cl);
  782.                 //    0 : 正常終了            ________  
  783.             short    x0;        //       (x0,y0)/           /
  784.             short    y0;        //            /              /
  785.             short    x1;        //          /←――lx――→/
  786.             short    y1;        //        /              /
  787.             short    lx;        //      /_______/(x1,y1)
  788.             short    cl;        //    描画色
  789.  
  790.             例
  791.                 int    ret;
  792.  
  793.                 ret = AOIslantingBox(320, 200, 100, 50, 30, 14);
  794.                 //    平行四辺形を描画します
  795.  
  796.  
  797.  
  798.  
  799.  
  800.         ■ AOIslantingBoxFull    塗りつぶし平行四辺形描画
  801.  
  802.             int AOIslantingBoxFull(x0, y0, x1, y1, lx, cl);
  803.                 //    0 : 正常終了            ________  
  804.             short    x0;        //       (x0,y0)/           /
  805.             short    y0;        //            /              /
  806.             short    x1;        //          /←――lx――→/
  807.             short    y1;        //        /              /
  808.             short    lx;        //      /_______/(x1,y1)
  809.             short    cl;        //    描画色
  810.  
  811.             例
  812.                 int    ret;
  813.  
  814.                 ret = AOIslantingBoxFull(320, 200, 100, 50, 30, 14);
  815.                 //    塗りつぶし平行四辺形を描画します
  816.  
  817.  
  818.  
  819.  
  820.  
  821.         ■ ank2sjis            半角を含む文字列を全角のみの文字列を変換します
  822.  
  823.             void ank2sjis(char string[], char str[]);
  824.                 //    戻りなし
  825.             char    string[];    //    変換後の文字列
  826.             char    str[];        //    変換前の文字列
  827.  
  828.             例
  829.                 char    string[50];
  830.  
  831.                 ank2sjis(string, "文字列ABCABC");
  832.                 //    文字列"文字列ABCABC"を全角"文字列ABCABC"に変換し
  833.                     string に格納します。
  834.  
  835.             注意
  836.                 変換後の文字列は十分に大きく取っておいた方が無難です。
  837.  
  838.  
  839.  
  840.  
  841.  
  842.         ■ sjisToJis        シフトJISをJISに変換します
  843.  
  844.             unsigned int sjisToJis(unsigned int sjis);
  845.                 //    変換結果を返します。
  846.             unsigned int    sjis;    //    変換前 SJISコード
  847.  
  848.             例
  849.                 unsigned int    jis;
  850.  
  851.                 jis = sjisToJis("愛");
  852.                 //    SJISコード"愛" を JISコードに変換して jis に格納します
  853.  
  854.  
  855.  
  856.  
  857.  
  858.         ■ AOIstrFJ2        FJ2フォントによる文字列描画 (新)
  859.  
  860.             void AOIstrFJ2(fp, fs, sx, sy, st, gap);
  861.                 //    戻りなし
  862.             FILE    *fp;        //    FJ2フォントファイルのFILE *fp
  863.             short    fs;            //    FJ2フォントファイルのサイズ(12,24,32,48,60)
  864.             short    sx;            //    開始X座標
  865.             short    sy;            //    開始Y座標
  866.             char    st[];        //    文字列
  867.             short    gap;        //    文字間隔
  868.  
  869.         例
  870.             FILE    *fp;
  871.  
  872.             if ((fp = fopen("Q:\\fj2\\font\\minn60.fnt", "rb")) == NULL) {
  873.                 perror("minn60.fnt のオープンを失敗しました");
  874.             }
  875.             AOIstrFJ2(fp, 60, 320, 200, "文字列ABC", 0);
  876.             //    座標(320, 200)に文字列を MINN60.FNT を使って描画します。
  877.  
  878.         注意
  879.             文字列は全角のみ
  880.  
  881.  
  882.  
  883.  
  884.  
  885.         ■ AOIstring_FJ2    FJ2フォントによる文字列描画 (旧)
  886.  
  887.             void AOIstring_FJ2(fp, fs, sx, sy, st, sc, gap);
  888.                 //    戻りなし
  889.             FILE    *fp;        //    FJ2フォントファイルのFILE *fp
  890.             short    fs;            //    FJ2フォントファイルのサイズ(12,24,32,48,60)
  891.             short    sx;            //    開始X座標
  892.             short    sy;            //    開始Y座標
  893.             char    st[];        //    文字列
  894.             short    sc;            //    描画色
  895.             short    gap;        //    文字間隔
  896.  
  897.         例
  898.             FILE    *fp;
  899.  
  900.             if ((fp = fopen("Q:\\fj2\\font\\minn60.fnt", "rb")) == NULL) {
  901.                 perror("minn60.fnt のオープンを失敗しました");
  902.             }
  903.             AOIstring_FJ2(fp, 60, 320, 200, "文字列ABC", 14, 0);
  904.             //    座標(320, 200)に文字列を MINN60.FNT を使って描画します。
  905.  
  906.         注意
  907.             文字列は全角のみ
  908.             なるべく AOIstrFJ2() を使ってください
  909.  
  910.  
  911.  
  912.  
  913.  
  914.         ■ AOIstrFJ2Zoom    FJ2フォントによる文字列描画
  915.  
  916.             void AOIstrFJ2Zoom(fp, fs, sx, sy, st, gap, zx, zy);
  917.                 //    戻りなし
  918.             FILE    *fp;        //    FJ2フォントファイルのFILE *fp
  919.             short    fs;            //    FJ2フォントファイルのサイズ(12,24,32,48,60)
  920.             short    sx;            //    開始X座標
  921.             short    sy;            //    開始Y座標
  922.             char    st[];        //    文字列
  923.             short    gap;        //    文字間隔
  924.             short    zx;            //    X方向大きさ
  925.             short    zy;            //    Y方向大きさ
  926.  
  927.         例
  928.             FILE    *fp;
  929.  
  930.             if ((fp = fopen("Q:\\fj2\\font\\minn60.fnt", "rb")) == NULL) {
  931.                 perror("minn60.fnt のオープンを失敗しました");
  932.             }
  933.             AOIstrFJ2Zoom(fp, 60, 320, 200, "文字列ABC", 0, 120, 80);
  934.             //    座標(320, 200)に文字列を MINN60.FNT を使って描画します。
  935.  
  936.         注意
  937.             文字列は全角のみ
  938.  
  939.  
  940.  
  941.  
  942.  
  943.         ■ AOIsystem12Font    12ドットフォントによる文字列描画
  944.  
  945.             void AOIsystem12Font(short x, short y, short c, char *str)
  946.                 //    戻りなし
  947.             short    x;            //    開始X座標
  948.             short    y;            //    開始Y座標
  949.             char    *str;        //    文字列
  950.  
  951.         例
  952.             AOIsystem12Font(320, 200, "文字列ABCABC");
  953.             //    座標(320, 200)に文字列を 12ドットフォント を使って描画します。
  954.  
  955.  
  956.  
  957.  
  958.  
  959.         ■ AOIgetGraph        画像データ画面の読み込み
  960.  
  961.             int AOIgetGraph(char *buf, short x0, short y0, short x1, short y1);
  962.                 //    0:正常終了
  963.             char    *buf;        //    画像保存用バッファ
  964.             short    x0;            //    開始X座標
  965.             short    y0;            //    開始Y座標
  966.             short    x1;            //    終了X座標
  967.             short    y1;            //    終了Y座標
  968.  
  969.         例
  970.             char    dispTmp[(320 / 8) * 240];
  971.  
  972.             AOIgetGraph(dispTmp, 0, 0, 320, 240);
  973.             AOIputGraph(dispTmp, 160, 240, 480, 480);
  974.             //    (0, 0)-(320, 240) の画像を (160, 240)-(480, 480)に複写します。
  975.  
  976.  
  977.  
  978.  
  979.  
  980.         ■ AOIputGraph        画像データ画面の読み込み
  981.  
  982.             int AOIputGraph(char *buf, short x0, short y0, short x1, short y1);
  983.                 //    0:正常終了
  984.             char    *buf;        //    画像保存用バッファ
  985.             short    x0;            //    開始X座標
  986.             short    y0;            //    開始Y座標
  987.             short    x1;            //    終了X座標
  988.             short    y1;            //    終了Y座標
  989.  
  990.         例
  991.             AOIgetGraph() の例 参照
  992.  
  993.  
  994.  
  995.  
  996.  
  997.         ■ AOIgetGraphZoom    画像データ画面の読み込み
  998.  
  999.             int AOIgetGraphZoom(buf, x0, y0, x1, y1, xs, ys);
  1000.                 //    0:正常終了
  1001.             char    *buf;        //    画像保存用バッファ
  1002.             short    x0;            //    開始X座標
  1003.             short    y0;            //    開始Y座標
  1004.             short    x1;            //    終了X座標
  1005.             short    y1;            //    終了Y座標
  1006.             short    xs;            //    X方向大きさ
  1007.             short    ys;            //    Y方向大きさ
  1008.  
  1009.         例
  1010.             char    dispTmp[(640 / 8) * 480];
  1011.  
  1012.             AOIgetGraphZoom(dispTmp, 0, 0, 320, 240, 640, 480);
  1013.             AOIputGraph(dispTmp, 0, 0, 640, 480);
  1014.             //    (0, 0)-(320, 240) の画像を 拡大します。
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.         ■ AOIputGraphZoom    画像データ画面の読み込み
  1021.  
  1022.             int AOIputGraphZoom(buf, x0, y0, x1, y1, xs, ys);
  1023.                 //    0:正常終了
  1024.             char    *buf;        //    画像保存用バッファ
  1025.             short    x0;            //    開始X座標
  1026.             short    y0;            //    開始Y座標
  1027.             short    x1;            //    終了X座標
  1028.             short    y1;            //    終了Y座標
  1029.             short    xs;            //    X方向大きさ
  1030.             short    ys;            //    Y方向大きさ
  1031.  
  1032.         例
  1033.             char    dispTmp[(320 / 8) * 240];
  1034.  
  1035.             AOIgetGraph(dispTmp, 0, 0, 320, 240);
  1036.             AOIputGraphZoom(dispTmp, 0, 0, 320, 240, 640, 480);
  1037.             //    (0, 0)-(320, 240) の画像を 拡大します。
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.         ■ AOIwindowMove    ウインドウの移動
  1044.  
  1045.             void AOIwindowMove(dispTmp, sx, sy, lx, ly);
  1046.                 //    戻りなし
  1047.             char    *dispTmp;    //    ウィンドウ描画前の画像データ
  1048.             short    *sx;        //    現在のウィンドウ開始X座標
  1049.             short    *sy;        //    現在のウィンドウ開始Y座標
  1050.             short    lx;            //    ウィンドウのX方向大きさ
  1051.             short    ly;            //    ウィンドウのY方向大きさ
  1052.  
  1053.         例
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.         ■ AOIwide3            画面モード 3をワイド化します(720 * 490相当)
  1060.  
  1061.             void AOIwide3(void);
  1062.  
  1063.         例
  1064.             AOIwide3();
  1065.             //    画面モード 3をワイド化します
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.         ■ AOIwide17        画面モード 17を横方向に 1.2倍拡大します
  1072.  
  1073.             void AOIwide17(void);
  1074.  
  1075.         例
  1076.             AOIwide17();
  1077.             //    画面モード 17を横方向に 1.2倍拡大します
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088. */
  1089.